package com.novunda.platform.common.utils;

import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * .
 * 功能说明：字符串工具类
 * @author FJ
 * @see 2016年9月19日
 * @version 1.0
 */
public final class StringUtil {
	/**
	 * . 构造器
	 */
	private StringUtil() {

	}

	/**
	 * . 判断字符串是否为空
	 * 
	 * @param string
	 *            字符串
	 * @return 是否为空
	 */
	public static boolean isEmpty(final String string) {
		return string == null || "".equals(string.trim());
	}

	/**
	 * . 判断字符串中是否包含中文
	 * 
	 * @param str
	 *            字符串
	 * @return flg 判断结果
	 */
	public static boolean isContainsChinese(final String str) {
		String regEx = "[\u4e00-\u9fa5]";
		Pattern pat = Pattern.compile(regEx);
		Matcher matcher = pat.matcher(str);
		boolean flg = false;
		if (matcher.find()) {
			flg = true;
		}
		return flg;
	}

	/**
	 * . 功能说明：验证是否为大于0的数字
	 * 
	 * @param str
	 *            要验证的字符串
	 * @return 验证结果 为数字返回true 否则为false
	 */
	public static boolean isBigerThanZero(final String str) {
		if (isEmpty(str)) {
			return false;
		}
		Pattern pattern = Pattern.compile("[1-9][0-9]*");
		Matcher isNum = pattern.matcher(str);
		return isNum.matches();
	}

	/**
	 * 验证是否为数字
	 * 
	 * @param str 源字符串
	 * @return 是否是数字
	 */
	public static boolean isNumeric(final String str) {
		if (isEmpty(str)) {
			return false;
		}
		Pattern pattern = Pattern.compile("[0-9]*");
		Matcher isNum = pattern.matcher(str);
		return isNum.matches();
	}

	/**
	 * .
	 *功能说明：转码
	 * @param str 源字符串
	 * @return 转码后的字符串
	 * @throws UnsupportedEncodingException
	 */
	public static String encodeStr(String str)
			throws UnsupportedEncodingException {
		return new String(str.getBytes("ISO-8859-1"), "UTF-8");
	}
	/**
	 * .. 判断是否是URL
	 *
	 * @param str
	 *            URL
	 * @return true or false 是URL为true
	 */
	public static boolean isUrl(final String str) {
		Pattern pattern = Pattern.compile(PATTERN_URL);
		Matcher isNum = pattern.matcher(str);
		return isNum.matches();
	}

	/**
	 * .. URL正则表达式
	 */
	private static final String PATTERN_URL = "^((https|http|ftp|rtsp|mms)?://)"
			+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" // ftp的user@
			+ "(([0-9]{1,3}\\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
			+ "|" // 允许IP和DOMAIN（域名）
			+ "([0-9a-z_!~*'()-]+\\.)*" // 域名- www.
			+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\." // 二级域名
			+ "[a-z]{2,6})" // first level domain- .com or .museum
//            + "(:[0-9]{1,4})?" // 端口- :80
			+ "[a-zA-Z0-9`~!@#$%^&*()-=\\[\\]\\;',./_+{}|\"<>?]{1,500}$";
}
